package com.rb.common.pager;

import java.io.Serializable;
import java.util.List;

/**
 * @author
 */
public class Pagination implements Serializable {

    public static final int DEF_COUNT = 5;
//    private List<Integer> localArrayList = new ArrayList<Integer>();

//    public List<Integer> getSegment() {
//        return localArrayList;
//    }

    /**
     * 当前页的数据
     */
    private List<?> itemList;

    /**
     * 获得分页内容
     *
     * @return
     */
    public List<?> getItemList() {
        return itemList;
    }

    /**
     * 设置分页内容
     *
     * @param itemList
     */
    public void setItemList(List<?> itemList) {
        this.itemList = itemList;
    }


    public Pagination() {
    }

    /**
     * 构造器
     *
     * @param pageNo     页码
     * @param pageSize   每页几条数据
     * @param totalCount 总共几条数据
     */
    public Pagination(int pageNo, int pageSize, int totalCount) {
        setTotalCount(totalCount);
        setPageSize(pageSize);
        setPageNo(pageNo);
        adjustPageNo();
        int totalPages = getTotalPage();
        setTotalPage(totalPages);

//        minPage = minPage < 1 ? 1 : minPage;
//        maxPage = maxPage > totalPages ? totalPages : maxPage;
//        for (int i = minPage; i <= maxPage; i++) {
//            localArrayList.add(i);
//        }
    }

    /**
     * 构造器
     *
     * @param pageNo     页码
     * @param pageSize   每页几条数据
     * @param totalCount 总共几条数据
     * @param itemList       分页内容
     */
    public Pagination(int pageNo, int pageSize, int totalCount, List<?> itemList) {
        this(pageNo, pageSize, totalCount);
        this.itemList = itemList;
    }

    /**
     * 调整页码，使不超过最大页数
     */
    public void adjustPageNo() {
        if (pageNo == 1) {
            return;
        }
        int tp = getTotalPage();
        if (pageNo > tp) {
            pageNo = tp;
        }
    }

    /**
     * 获得页码
     */
    public int getPageNo() {
        return pageNo;
    }

    /**
     * 每页几条数据
     */
    public int getPageSize() {
        return pageSize;
    }

    /**
     * 总共几条数据
     */
    public int getTotalCount() {
        return totalCount;
    }

    /**
     * 总共几页
     */
    public int getTotalPage() {
        int totalPage = totalCount / pageSize;
        if (totalCount % pageSize != 0) {
            totalPage++;
        }
        return totalPage;
    }

    /**
     * 是否第一页
     */
    public boolean isFirstPage() {
        return pageNo <= 1;
    }

    /**
     * 是否最后一页
     */
    public boolean isLastPage() {
        return pageNo >= getTotalPage();
    }

    /**
     * 下一页页码
     */
    public int getNextPage() {
        if (isLastPage()) {
            return pageNo;
        } else {
            return pageNo + 1;
        }
    }

    /**
     * 上一页页码
     */
    public int getPrePage() {
        if (isFirstPage()) {
            return pageNo;
        } else {
            return pageNo - 1;
        }
    }

    protected int totalCount = 0;
    protected int totalPage = 0;
    private int pageSize = 5;
    private int pageNo = 1;

    /**
     * if totalCount<0 then totalCount=0
     *
     * @param totalCount
     */
    public void setTotalCount(int totalCount) {
        if (totalCount < 0) {
            this.totalCount = 0;
        } else {
            this.totalCount = totalCount;
        }
    }

    public void setTotalPage(int totalPage){
        if (totalPage < 0) {
            this.totalPage = 0;
        } else {
            this.totalPage = totalPage;
        }
    }


    /**
     * if pageSize< 1 then pageSize=DEF_COUNT
     *
     * @param pageSize
     */
    public void setPageSize(int pageSize) {
        if (pageSize < 1) {
            this.pageSize = DEF_COUNT;
        } else {
            this.pageSize = pageSize;
        }
    }

    /**
     * if pageNo < 1 then pageNo=1
     *
     * @param pageNo
     */
    public void setPageNo(int pageNo) {
        if (pageNo < 1) {
            this.pageNo = 1;
        } else {
            this.pageNo = pageNo;
        }
    }

//    int minPage = pageNo - (int) Math.floor((pageSize - 1) / 2.0D);
//    int maxPage = pageNo + (int) Math.ceil((pageSize - 1) / 2.0D);

    public static void main(String[] args) {
        System.out.println(0%10);
        System.out.println(1%10);
    }
}
